home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 292_03 / m09pst.c < prev    next >
C/C++ Source or Header  |  1990-07-16  |  9KB  |  330 lines

  1. /* M09PST:C */
  2.  
  3. /*
  4.  * (C) Copyright 1989,1990
  5.  * All Rights Reserved
  6.  *
  7.  * Alan R. Baldwin
  8.  * 721 Berkeley St.
  9.  * Kent, Ohio  44240
  10.  */
  11.  
  12. #include <stdio.h>
  13. #include <setjmp.h>
  14. #include "asm.h"
  15. #include "m6809.h"
  16.  
  17. struct    mne    mne[] = {
  18.  
  19.     /* machine */
  20.  
  21.     NULL,    ".setdp",    S_SDP,        0,    0,
  22.  
  23.     /* system */
  24.  
  25.     NULL,    "CON",        S_ATYP,        0,    A_CON,
  26.     NULL,    "OVR",        S_ATYP,        0,    A_OVR,
  27.     NULL,    "REL",        S_ATYP,        0,    A_REL,
  28.     NULL,    "ABS",        S_ATYP,        0,  A_ABS|A_OVR,
  29.     NULL,    "NOPAG",    S_ATYP,        0,    A_NOPAG,
  30.     NULL,    "PAG",        S_ATYP,        0,    A_PAG,
  31.  
  32.     NULL,    ".byte",    S_BYTE,        0,    0,
  33.     NULL,    ".db",        S_BYTE,        0,    0,
  34.     NULL,    ".word",    S_WORD,        0,    0,
  35.     NULL,    ".dw",        S_WORD,        0,    0,
  36.     NULL,    ".ascii",    S_ASCII,    0,    0,
  37.     NULL,    ".asciz",    S_ASCIZ,    0,    0,
  38.     NULL,    ".blkb",    S_BLK,        0,    1,
  39.     NULL,    ".ds",        S_BLK,        0,    1,
  40.     NULL,    ".blkw",    S_BLK,        0,    2,
  41.     NULL,    ".page",    S_PAGE,        0,    0,
  42.     NULL,    ".title",    S_TITLE,    0,    0,
  43.     NULL,    ".sbttl",    S_SBTL,        0,    0,
  44.     NULL,    ".globl",    S_GLOBL,    0,    0,
  45.     NULL,    ".area",    S_DAREA,    0,    0,
  46.     NULL,    ".even",    S_EVEN,        0,    0,
  47.     NULL,    ".odd",        S_ODD,        0,    0,
  48.     NULL,    ".if",        S_IF,        0,    0,
  49.     NULL,    ".else",    S_ELSE,        0,    0,
  50.     NULL,    ".endif",    S_ENDIF,    0,    0,
  51.     NULL,    ".include",    S_INCL,        0,    0,
  52.     NULL,    ".radix",    S_RADIX,    0,    0,
  53.     NULL,    ".org",        S_ORG,        0,    0,
  54.     NULL,    ".module",    S_MODUL,    0,    0,
  55.  
  56.     /* 6800 Compatibility */
  57.  
  58.     NULL,    "ldaa",        S_ACC,        0,    0x86,
  59.     NULL,    "ldab",        S_ACC,        0,    0xC6,
  60.     NULL,    "oraa",        S_ACC,        0,    0x8A,
  61.     NULL,    "orab",        S_ACC,        0,    0xCA,
  62.     NULL,    "staa",        S_STR,        0,    0x87,
  63.     NULL,    "stab",        S_STR,        0,    0xC7,
  64.  
  65.     /* if this is changed, change struct opdata mc6800[] */
  66.  
  67.     NULL,    "aba",        S_6800,        0,    0,
  68.     NULL,    "cba",        S_6800,        0,    1,
  69.     NULL,    "clc",        S_6800,        0,    2,
  70.     NULL,    "cli",        S_6800,        0,    3,
  71.     NULL,    "clv",        S_6800,        0,    4,
  72.     NULL,    "des",        S_6800,        0,    5,
  73.     NULL,    "dex",        S_6800,        0,    6,
  74.     NULL,    "ins",        S_6800,        0,    7,
  75.     NULL,    "inx",        S_6800,        0,    8,
  76.     NULL,    "psha",        S_6800,        0,    9,
  77.     NULL,    "pshb",        S_6800,        0,    10,
  78.     NULL,    "pula",        S_6800,        0,    11,
  79.     NULL,    "pulb",        S_6800,        0,    12,
  80.     NULL,    "sba",        S_6800,        0,    13,
  81.     NULL,    "sec",        S_6800,        0,    14,
  82.     NULL,    "sei",        S_6800,        0,    15,
  83.     NULL,    "sev",        S_6800,        0,    16,
  84.     NULL,    "tab",        S_6800,        0,    17,
  85.     NULL,    "tap",        S_6800,        0,    18,
  86.     NULL,    "tba",        S_6800,        0,    19,
  87.     NULL,    "tpa",        S_6800,        0,    20,
  88.     NULL,    "tsx",        S_6800,        0,    21,
  89.     NULL,    "txs",        S_6800,        0,    22,
  90.     NULL,    "wai",        S_6800,        0,    23,
  91.  
  92.     /* 6809 */
  93.  
  94.     NULL,    "sty",        S_STR1,        0,    0x8F,
  95.     NULL,    "sts",        S_STR1,        0,    0xCF,
  96.  
  97.     NULL,    "sta",        S_STR,        0,    0x87,
  98.     NULL,    "stb",        S_STR,        0,    0xC7,
  99.     NULL,    "std",        S_STR,        0,    0xCD,
  100.     NULL,    "stx",        S_STR,        0,    0x8F,
  101.     NULL,    "stu",        S_STR,        0,    0xCF,
  102.     NULL,    "jsr",        S_STR,        0,    0x8D,
  103.  
  104.     NULL,    "cmpu",        S_LR2,        0,    0x83,
  105.     NULL,    "cmps",        S_LR2,        0,    0x8C,
  106.  
  107.     NULL,    "cmpd",        S_LR1,        0,    0x83,
  108.     NULL,    "cmpy",        S_LR1,        0,    0x8C,
  109.     NULL,    "ldy",        S_LR1,        0,    0x8E,
  110.     NULL,    "lds",        S_LR1,        0,    0xCE,
  111.  
  112.     NULL,    "subd",        S_LR,        0,    0x83,
  113.     NULL,    "addd",        S_LR,        0,    0xC3,
  114.     NULL,    "cmpx",        S_LR,        0,    0x8C,
  115.     NULL,    "cpx",        S_LR,        0,    0x8C,
  116.     NULL,    "ldd",        S_LR,        0,    0xCC,
  117.     NULL,    "ldx",        S_LR,        0,    0x8E,
  118.     NULL,    "ldu",        S_LR,        0,    0xCE,
  119.  
  120.     NULL,    "leax",        S_LEA,        0,    0x30,
  121.     NULL,    "leay",        S_LEA,        0,    0x31,
  122.     NULL,    "leas",        S_LEA,        0,    0x32,
  123.     NULL,    "leau",        S_LEA,        0,    0x33,
  124.  
  125.     NULL,    "pshs",        S_PULS,        0,    0x34,
  126.     NULL,    "puls",        S_PULS,        0,    0x35,
  127.     NULL,    "pshu",        S_PULU,        0,    0x36,
  128.     NULL,    "pulu",        S_PULU,        0,    0x37,
  129.  
  130.     NULL,    "exg",        S_EXG,        0,    0x1E,
  131.     NULL,    "tfr",        S_EXG,        0,    0x1F,
  132.  
  133.     NULL,    "cwai",        S_CC,        0,    0x3C,
  134.     NULL,    "orcc",        S_CC,        0,    0x1A,
  135.     NULL,    "andcc",    S_CC,        0,    0x1C,
  136.  
  137.     NULL,    "swi3",        S_INH2,        0,    0x3F,
  138.     NULL,    "swi2",        S_INH1,        0,    0x3F,
  139.     NULL,    "swi1",        S_INH,        0,    0x3F,
  140.  
  141.     NULL,    "abx",        S_INH,        0,    0x3A,
  142.     NULL,    "asla",        S_INH,        0,    0x48,
  143.     NULL,    "aslb",        S_INH,        0,    0x58,
  144.     NULL,    "asra",        S_INH,        0,    0x47,
  145.     NULL,    "asrb",        S_INH,        0,    0x57,
  146.     NULL,    "clra",        S_INH,        0,    0x4F,
  147.     NULL,    "clrb",        S_INH,        0,    0x5F,
  148.     NULL,    "coma",        S_INH,        0,    0x43,
  149.     NULL,    "comb",        S_INH,        0,    0x53,
  150.     NULL,    "daa",        S_INH,        0,    0x19,
  151.     NULL,    "deca",        S_INH,        0,    0x4A,
  152.     NULL,    "decb",        S_INH,        0,    0x5A,
  153.     NULL,    "inca",        S_INH,        0,    0x4C,
  154.     NULL,    "incb",        S_INH,        0,    0x5C,
  155.     NULL,    "lsla",        S_INH,        0,    0x48,
  156.     NULL,    "lslb",        S_INH,        0,    0x58,
  157.     NULL,    "lsra",        S_INH,        0,    0x44,
  158.     NULL,    "lsrb",        S_INH,        0,    0x54,
  159.     NULL,    "mul",        S_INH,        0,    0x3D,
  160.     NULL,    "nega",        S_INH,        0,    0x40,
  161.     NULL,    "negb",        S_INH,        0,    0x50,
  162.     NULL,    "nop",        S_INH,        0,    0x12,
  163.     NULL,    "rola",        S_INH,        0,    0x49,
  164.     NULL,    "rolb",        S_INH,        0,    0x59,
  165.     NULL,    "rora",        S_INH,        0,    0x46,
  166.     NULL,    "rorb",        S_INH,        0,    0x56,
  167.     NULL,    "rti",        S_INH,        0,    0x3B,
  168.     NULL,    "rts",        S_INH,        0,    0x39,
  169.     NULL,    "sex",        S_INH,        0,    0x1D,
  170.     NULL,    "swi",        S_INH,        0,    0x3F,
  171.     NULL,    "sync",        S_INH,        0,    0x13,
  172.     NULL,    "tsta",        S_INH,        0,    0x4D,
  173.     NULL,    "tstb",        S_INH,        0,    0x5D,
  174.  
  175.     NULL,    "lbrn",        S_LBRA,        0,    0x21,
  176.     NULL,    "lbhi",        S_LBRA,        0,    0x22,
  177.     NULL,    "lbls",        S_LBRA,        0,    0x23,
  178.     NULL,    "lblos",    S_LBRA,        0,    0x23,
  179.     NULL,    "lbcc",        S_LBRA,        0,    0x24,
  180.     NULL,    "lbhs",        S_LBRA,        0,    0x24,
  181.     NULL,    "lbhis",    S_LBRA,        0,    0x24,
  182.     NULL,    "lbcs",        S_LBRA,        0,    0x25,
  183.     NULL,    "lblo",        S_LBRA,        0,    0x25,
  184.     NULL,    "lbne",        S_LBRA,        0,    0x26,
  185.     NULL,    "lbeq",        S_LBRA,        0,    0x27,
  186.     NULL,    "lbvc",        S_LBRA,        0,    0x28,
  187.     NULL,    "lbvs",        S_LBRA,        0,    0x29,
  188.     NULL,    "lbpl",        S_LBRA,        0,    0x2A,
  189.     NULL,    "lbmi",        S_LBRA,        0,    0x2B,
  190.     NULL,    "lbge",        S_LBRA,        0,    0x2C,
  191.     NULL,    "lblt",        S_LBRA,        0,    0x2D,
  192.     NULL,    "lbgt",        S_LBRA,        0,    0x2E,
  193.     NULL,    "lble",        S_LBRA,        0,    0x2F,
  194.  
  195.     NULL,    "lbra",        S_LBSR,        0,    0x16,
  196.     NULL,    "lbsr",        S_LBSR,        0,    0x17,
  197.  
  198.     NULL,    "neg",        S_SOP,        0,    0x40,
  199.     NULL,    "com",        S_SOP,        0,    0x43,
  200.     NULL,    "lsr",        S_SOP,        0,    0x44,
  201.     NULL,    "ror",        S_SOP,        0,    0x46,
  202.     NULL,    "asr",        S_SOP,        0,    0x47,
  203.     NULL,    "asl",        S_SOP,        0,    0x48,
  204.     NULL,    "lsl",        S_SOP,        0,    0x48,
  205.     NULL,    "rol",        S_SOP,        0,    0x49,
  206.     NULL,    "dec",        S_SOP,        0,    0x4A,
  207.     NULL,    "inc",        S_SOP,        0,    0x4C,
  208.     NULL,    "tst",        S_SOP,        0,    0x4D,
  209.     NULL,    "clr",        S_SOP,        0,    0x4F,
  210.     NULL,    "jmp",        S_SOP,        0,    0x4E,
  211.  
  212.     NULL,    "suba",        S_ACC,        0,    0x80,
  213.     NULL,    "subb",        S_ACC,        0,    0xC0,
  214.     NULL,    "cmpa",        S_ACC,        0,    0x81,
  215.     NULL,    "cmpb",        S_ACC,        0,    0xC1,
  216.     NULL,    "sbca",        S_ACC,        0,    0x82,
  217.     NULL,    "sbcb",        S_ACC,        0,    0xC2,
  218.     NULL,    "anda",        S_ACC,        0,    0x84,
  219.     NULL,    "andb",        S_ACC,        0,    0xC4,
  220.     NULL,    "bita",        S_ACC,        0,    0x85,
  221.     NULL,    "bitb",        S_ACC,        0,    0xC5,
  222.     NULL,    "lda",        S_ACC,        0,    0x86,
  223.     NULL,    "ldb",        S_ACC,        0,    0xC6,
  224.     NULL,    "eora",        S_ACC,        0,    0x88,
  225.     NULL,    "eorb",        S_ACC,        0,    0xC8,
  226.     NULL,    "adca",        S_ACC,        0,    0x89,
  227.     NULL,    "adcb",        S_ACC,        0,    0xC9,
  228.     NULL,    "ora",        S_ACC,        0,    0x8A,
  229.     NULL,    "orb",        S_ACC,        0,    0xCA,
  230.     NULL,    "adda",        S_ACC,        0,    0x8B,
  231.     NULL,    "addb",        S_ACC,        0,    0xCB,
  232.  
  233.     NULL,    "bra",        S_BRA,        0,    0x20,
  234.     NULL,    "brn",        S_BRA,        0,    0x21,
  235.     NULL,    "bhi",        S_BRA,        0,    0x22,
  236.     NULL,    "bls",        S_BRA,        0,    0x23,
  237.     NULL,    "blos",        S_BRA,        0,    0x23,
  238.     NULL,    "bcc",        S_BRA,        0,    0x24,
  239.     NULL,    "bhs",        S_BRA,        0,    0x24,
  240.     NULL,    "bhis",        S_BRA,        0,    0x24,
  241.     NULL,    "bcs",        S_BRA,        0,    0x25,
  242.     NULL,    "blo",        S_BRA,        0,    0x25,
  243.     NULL,    "bne",        S_BRA,        0,    0x26,
  244.     NULL,    "beq",        S_BRA,        0,    0x27,
  245.     NULL,    "bvc",        S_BRA,        0,    0x28,
  246.     NULL,    "bvs",        S_BRA,        0,    0x29,
  247.     NULL,    "bpl",        S_BRA,        0,    0x2A,
  248.     NULL,    "bmi",        S_BRA,        0,    0x2B,
  249.     NULL,    "bge",        S_BRA,        0,    0x2C,
  250.     NULL,    "blt",        S_BRA,        0,    0x2D,
  251.     NULL,    "bgt",        S_BRA,        0,    0x2E,
  252.     NULL,    "ble",        S_BRA,        0,    0x2F,
  253.     NULL,    "bsr",        S_BRA,        S_END,    0x8D
  254. };
  255.  
  256. struct opdata mc6800[] = {
  257.  
  258.     0x34, 0x04,    /*    pshs    b    ;aba    */
  259.     0xab, 0xe0,    /*    adda    ,s+    */
  260.  
  261.     0x34, 0x04,    /*    pshs    b    ;cba    */
  262.     0xa1, 0xe0,    /*    cmpa    ,s+    */
  263.  
  264.     0x1c, 0xfe,    /*    andcc    #0xFE    ;clc    */
  265.     0x00, 0x00,
  266.  
  267.     0x1c, 0xef,    /*    andcc    #0xEF    ;cli    */
  268.     0x00, 0x00,
  269.  
  270.     0x1c, 0xfd,    /*    andcc    #0xFD    ;clv    */
  271.     0x00, 0x00,
  272.  
  273.     0x32, 0x7f,    /*    leas    -1,s    ;des    */
  274.     0x00, 0x00,
  275.  
  276.     0x30, 0x1f,    /*    leax    -1,x    ;dex    */
  277.     0x00, 0x00,
  278.  
  279.     0x32, 0x61,    /*    leas    1,s    ;ins    */
  280.     0x00, 0x00,
  281.  
  282.     0x30, 0x01,    /*    leax    1,x    ;inx    */
  283.     0x00, 0x00,
  284.  
  285.     0x34, 0x02,    /*    pshs    a    ;psha    */
  286.     0x00, 0x00,
  287.  
  288.     0x34, 0x04,    /*    pshs    b    ;pshb    */
  289.     0x00, 0x00,
  290.  
  291.     0x35, 0x02,    /*    puls    a    ;pula    */
  292.     0x00, 0x00,
  293.  
  294.     0x35, 0x04,    /*    puls    b    ;pulb    */
  295.     0x00, 0x00,
  296.  
  297.     0x34, 0x04,    /*    pshs    b    ;sba    */
  298.     0xa0, 0xe0,    /*    suba    ,s+    */
  299.  
  300.     0x1a, 0x01,    /*    orcc    #0x01    ;sec    */
  301.     0x00, 0x00,
  302.  
  303.     0x1a, 0x10,    /*    orcc    #0x10    ;sei    */
  304.     0x00, 0x00,
  305.  
  306.     0x1a, 0x02,    /*    orcc    #0x02